#include <stdio.h> 
#include <stdlib.h>
#include <string.h>

/*
1、栈只能从一端（栈顶）存取，另一端（栈底）是封闭的
2、在栈中，都必须从栈顶存取数据，且遵循  先进后出 原则
栈是一种只能从表的一端存取数据，且遵循 先进后出 原则的线性存储结构

入栈和出栈

入栈：将数据存储到栈里面去
出栈：将数据从站里面取出来

栈：特殊的线性存储结构
顺序表
链表

栈的应用


*/

/*一 元素入栈*/
//参数：存储结构,top,数据
//返回值：top
int pushElem(int* arr,int top,int value)
{
    top++;    //top 先加
    arr[top]=value;
    printf("push now value:%d\n",arr[top]);
    return top;
}

/*二 元素出栈*/
//参数：存储结构,top
//返回值：top
int popElem(int* arr,int top)
{
    if(top<=-1)
    {
        printf("kong!\n");
        return -1;
    }
    printf("pop now value:%d\n",arr[top]); 
    top--;
    return top;
}


int main()
{
    //定义数组（顺序表）：栈
    int a[100];

    //top(记录栈顶)
    int top=-1;

    //入栈
    top=pushElem(a,top,1);
    top=pushElem(a,top,2);
    top=pushElem(a,top,3);
    top=pushElem(a,top,4);
    top=pushElem(a,top,5);


    //出栈
    top=popElem(a,top);
    top=popElem(a,top);
    top=popElem(a,top);
    top=popElem(a,top);
    top=popElem(a,top);
    top=popElem(a,top);


	//system("pause");
	return 0;
} 